1. Field of the Invention
The present invention relates generally to Virtual Machine (VM) technology and, more particularly, to a method and system for accessing remote devices using a VM.
2. Background Art
In the past decade, capabilities of computer systems have increased significantly. Computer systems process large volumes of data, which is changed or updated constantly. Even well-known and widely distributed applications are upgraded very often, so consumers have to download new software remotely.
One conventional approach that allows users to have access to files and applications residing on a remote system is so-called “dumb terminal” that is connected to a large central computer or a computer cluster. The applications are only installed on the central computer, and users run the applications remotely. The user can control the application through a GUI of the local display, while no application executable code is loaded onto the user's computer. The “dumb terminal” approach has two major shortcomings. One is security, since the user has to pass data to the central computer system. Another one is that a user is limited to applications installed on the central computer system.
Another way for a user to remotely access software and data is to download the entire desired application from a provider, which generally involves loading files from a physical storage medium such as a CD ROM. This approach is inconvenient for users who only need to use a particular feature of the application, or only need it for a short time. Another disadvantage of this approach is that the downloaded applications occupy large amounts of memory available on the user's system. Downloading of applications also presents a problem of unauthorized copying.
The problem of accessing and running, by a user, a potentially arbitrarily large number of applications (i.e., executable files) remotely is addressed in the U.S. Pat. No. 6,735,601. The system disclosed in this patent allows a user to retain local control of the execution of the applications installed or stored remotely. The proposed system is intended for situations when a user chooses not to load the application onto his computer. No scaling down or other modifications of the software applications are required. The proposed system, however, does not allow users to access devices controlled by the remote server or by a local client of the remote server.
The industry trend of virtualization and isolation of computer system resources makes the task of remote access, and in particularly remote device access, more complex. A Virtual Machine (VM) is a type of an isolated Virtual Execution Environment that runs on the same physical machine simultaneously. Each VM instance executes its own OS kernel. Support of Virtual Machines is implemented using a Virtual Machine Monitor and/or a Hypervisor.
Virtualization allows running a number of VMs on the same physical machine or server. Each VM can have a Guest Operating System (GOS) implemented on it. A GOS can support a number of Guest tools and devices. A remote access to these tools and devices by a user of a remote computer system is critical. None of the conventional remote access systems provide an efficient mechanism for remote access to devices in a Virtual Execution Environment.
Accordingly, there is a need for a system and a method for accessing remote devices using a Virtual Execution Environment.